; TestController device configuration file for Rigol DG1000Z series ARB Generators (DG1022Z, DG1032Z and DG1062Z)
; Version 1.05
; Date 29-10-2025
; Written by Gertjan Miedema,  info at miedemageluid dot nl,  Username "Gertjan" at EEVblog.
; Adapted from Rigol DG9xx config file by: bateau020, source originally from HKJ and HBO.

; For use with TestController, software to control and log data.
; Tested with DG1032Z over LXI interface.

; TestController must be restarted before any changes in this file will be used.
; TestController Manual is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html


; Some tips:
;
; - The DG1000Z Front Panel is not locked while in remote mode.
;   So any missing setting in the TestController Setup Menu can be set on the DG1000Z Front Panel.
;


; Known issues:
;
; - USB connection is not supported. TestController does not support USB-TMC. -> Use Ethernet (LXI or socket).
;
; - DG1000Z seems to have issues with DHCP (trying to connect in a wrong subnet).
;   Using the fixed IP address setting is the solution.
;
; - There is a bug in DG1000Z when Querying the (ARB) DC offset. Instead of the offset for DC, the offset for Sine is returned. 
;   As a workaround, the DC offset value is also written to SINe, to get correct TestController read-out.
;   So, when running a DC sweep, you will see the DG1000 momentary switch to Sine 
;
; - The #interface programming interface will not work for offset in the DC ARB mode.
;   This is because the DG1000Z has a bug in the DC offset programming code. (see above)
;   (In this definition a work around is used with a separate command string for DC Offset, 
;   but that does not fit in the universal #interface)
;



#metadef
#idString Rigol Technologies,DG1022Z,
#name Rigol DG1022Z
#handle DG1022Z

#replaceText MaxFrequency 25M 
#replaceText MinPeriod 40n



#metadef
#idString Rigol Technologies,DG1032Z,
#name Rigol DG1032Z
#handle DG1032Z

#replaceText MaxFrequency 30M 
#replaceText MinPeriod 33.3n



#metadef
#idString Rigol Technologies,DG1062Z,
#name Rigol DG1062Z
#handle DG1062Z

#replaceText MaxFrequency 60M 
#replaceText MinPeriod 16.6n



#meta

#idString Rigol Technologies,DG1032Z,
#name Rigol DG1032Z
#handle DG1032Z
#port lxi 5555


; The author statement is used for the listing in the About window.
#author Gertjan Miedema



#notes  Device configuration file for Rigol DG1000Z series ARB Generators

- USB connection is not supported. TestController does not support USB-TMC.
  -> Use Ethernet (LXI or socket)

- The DG1000Z Front Panel is not locked while in remote mode.
  So any missing setting in the TestController Setup Menu can be set on the DG1000Z Front Panel.

- For more info, tips and known issues, see the notes in the header of the device configuration file (Rigol DG1000Z.txt)


Configuration file version: 1.05




; ---------- Read-Out commands ---------

#value Freq1 Hz SI
#value Ampli1_pp Vpp SI CH1_VPP
#value Ampli1_rms Vrms SI CH1_VRMS
#value Ampli1_dB dBm D3 CH1_DBM
#value Offset1 V SI

#value Freq2 Hz SI
#value Ampli2_pp Vpp SI CH2_VPP
#value Ampli2_rms Vrms SI CH2_VRMS
#value Ampli2_dB dBm D3 CH2_DBM
#value Offset2 V SI



; Prepare the meter to response to #askValues
; #prepareSample 


; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command

; :SOUR1:FREQ?      Query the waveform frequency of CH1
; :SOUR1:VOLT?      Query the waveform amplitude of CH1
; :SOUR1:VOLT:OFFS? Query the offset voltage of CH1
; :SOUR1:PHAS?      Query the waveform start phase of CH1
; :SOUR1:VOLT:UNIT? Query the amplitude unit of CH1 (VPP|VRMS|DBM)

#askValues :SOUR1:VOLT:UNIT?;:SOUR2:VOLT:UNIT?;:SOUR1:FREQ?;:SOUR1:VOLT?;:SOUR1:VOLT:OFFS?;:SOUR2:FREQ?;:SOUR2:VOLT?;:SOUR2:VOLT:OFFS?;
#askValuesReadFormat xxffffff



#askMode :SOUR1:VOLT:UNIT?;:SOUR2:VOLT:UNIT?
#askModeMathFormat "CH1_"+getElement(value,0)+" CH2_"+getElement(value,1)
#modeFromValue "CH1_"+getElement(value,0)+" CH2_"+getElement(value,1)



; Switch meter to this mode during start, leave empty to avoid any switching
#initialMode 






; ---------- Initial & Final commands ---------

; Initial commands to meter when establishing connection
; Set instrument to default values, set outputlevels to 1V (with display focus on CH1)
#initCmd :SYST:PRES DEF;[500];


; Final command to meter before breaking connection
; Set instrument to default values, set outputlevels to 1V (with display focus on CH1)
#finalCmd :OUTP2 OFF;:OUTP1 OFF;:SYST:PRES DEF;[500];

#outputOff :OUTP2 OFF;:OUTP1 OFF;





; ---------- Programming interface ---------

#interfaceType ARB ARB:2
#interface setFrequency :SOUR(channel):FREQ (value)
#interface setAmplitude :SOUR(channel):VOLT (value)
#interface setOffset :SOUR(channel):VOLT:OFFS (value)
#interface setWaveform :SOUR(channel):APPL:(value) 
#interface setOn :OUTP(channel) (getElement("off on",value," "))


#interface getFrequency :SOUR(channel):FREQ?

#interface getAmplitude :SOUR(channel):VOLT?

#interface getOffset :SOUR(channel):VOLT:OFFS?

#interface getWaveform :SOUR(channel):APPL?
:string:
:readmath: getElement(unQuote(value),0,",")

#interface getOn :OUTP(channel)?
:readmath: listIndex(getMatch(value,"(ON)|(OFF)"),"OFF ON"," ")

#interface readFrequency 0 3
#interface readAmplitude 1 4
#interface readOffset 2 5




; --------------------  Setup Menu CH1  --------------------

#cmdSetup color _ Channel_1
(255,204,51)


#cmdSetup indicator Output_state Channel_1
:read: :OUTP1?
:updatealloff:
Off (value)=="OFF" (204,255,204)
On (value)=="ON" (0,153,0)

#cmdSetup buttons Output_state Channel_1
:write: :OUTP1
Off OFF
On ON


#cmdSetup combobox Waveform Channel_1
:read: :SOUR1:APPL?
:readmath: getElement(unQuote(value),0,",")
:write: :SOUR1:APPL:#
:update: Channel_1.Arbitrary
Sine SIN
Square SQU
Pulse PULSE
Ramp RAMP
Noise NOISE
Arbitrary USER
DC DC


#cmdSetup combobox Arbitrary Channel_1
:read: :SOUR1:FUNC?
:readmath: getElement(unQuote(value),0,",")
:write: :SOUR1:FUNC #
:update: Channel_1.Waveform 
SinC SINC
Lorentz LORENTZ
Gauss_pulse GAUSSPULSE
Stair_down STAIRDN
Stair_up STAIRUP
Airy AIRY
Cubic CUBIC
Exp._rise EXPRISE
Exp._fall EXPFALL
CosH COSH
Abs._sine ABSSINE
DC DC


#cmdSetup separator _ Freq_1
2 100 Raised

#cmdSetup number Frequency Freq_1
:read: :SOUR1:FREQ?
:textwidth: 8
:write: :SOUR1:FREQ #
:update: Freq_1.Period
:tip: MaxFrequency is only possible in sine mode.
:updatemodechange:
Hz 1u MaxFrequency


#cmdSetup number Period Freq_1
:read: :SOUR1:PER?
:write: :SOUR1:PER #
:textwidth: 8
:update: Freq_1.Frequency
:tip: MinPeriod is only possible in sine mode.
:updatemodechange:
s MinPeriod 1M


#cmdSetup separator _ Ampli_1
2 100 Raised


#cmdSetup radio Amplitude_unit Ampli_1
:enable: CalZ_1.Load_Imp=="9.900000E+37"
:visible: CalZ_1.Load_Imp=="9.900000E+37"
:read: :SOUR1:VOLT:UNIT?
:string:
:write: :SOUR1:VOLT:UNIT # 
:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset
:tip: <html>Amplitude units available are Volts peak to peak, Volts RMS and dBm<br>dBm is not possible with High Z (High ; Impedance) setting 
:updatemodechange:
Vpp VPP
Vrms VRMS

#cmdSetup radio Amplitude_unit Ampli_1
:enable: CalZ_1.Load_Imp!="9.900000E+37"
:visible: CalZ_1.Load_Imp!="9.900000E+37"
:read: :SOUR1:VOLT:UNIT?
:string:
:write: :SOUR1:VOLT:UNIT # 
:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset
:tip: <html>Amplitude units available are Volts peak to peak, Volts RMS and dBm<br>dBm is not possible with High Z (High ; Impedance) setting 
:updatemodechange:
Vpp VPP
Vrms VRMS
dBm DBM

#cmdSetup number Amplitude Ampli_1
:enable: Ampli_1.Amplitude_unit=="VPP"
:visible: Ampli_1.Amplitude_unit=="VPP"
:read: :SOUR1:VOLT?
:write: :SOUR1:VOLT #
:textwidth: 8
:update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset
:tip: Vpp Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
Vpp 1m 20

#cmdSetup number Amplitude Ampli_1
:enable: Ampli_1.Amplitude_unit=="VRMS"
:visible: Ampli_1.Amplitude_unit=="VRMS"
:read: :SOUR1:VOLT?
:write: :SOUR1:VOLT #
:textwidth: 8
:update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
Vrms 1m 7

#cmdSetup number Amplitude Ampli_1
:enable: Ampli_1.Amplitude_unit=="DBM"
:visible: Ampli_1.Amplitude_unit=="DBM"
:read: :SOUR1:VOLT?
:write: :SOUR1:VOLT #
:textwidth: 8
:update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
dBm -56 23


#cmdSetup number High_Level Ampli_1
:read: :SOUR1:VOLT:HIGH?
:textwidth: 8
:write: :SOUR1:VOLT:HIGH #
:update: Ampli_1.Amplitude, Ampli_1.Low_Level, Ampli_1.Offset
:tip: Must be > Low Level. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup number Low_Level Ampli_1
:read: :SOUR1:VOLT:LOW?
:textwidth: 8
:write: :SOUR1:VOLT:LOW #
:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Offset
:tip: Must be < High Level. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup number Offset Ampli_1
:read: :SOUR1:VOLT:OFFS?
:textwidth: 8
:write: :SOUR1:VOLT:OFFS #
:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level
:tip: Vpp Amplitude + offset must be within +/-10V. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup separator _ Offset_1
2 100 Raised

; Seperate offset for the DC (Arb) mode
#cmdSetup number DC_Offset Offset_1
:read: :SOUR1:VOLT:OFFS?
:textwidth: 8
; Because of a bug in DG1000Z, offset value is also written to SINe, to get TestController read-out.
:write: :SOUR1:APPL:SIN MIN,MIN,#,0;:SOUR1:APPL:DC 1,1,#;
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup combobox Load_Imp CalZ_1
:read: :OUTP1:IMP?
:write: :OUTP1:IMP #
:update: Ampli_1.Amplitude, Ampli_1.Low_Level, Ampli_1.High_Level, Ampli_1.Offset
:tip: Calibrates Amplitude settings to match the actual load impedance
:updatemodechange:
50_Ohm 5.000000E+01
75_Ohm 7.500000E+01
110_Ohm 1.100000E+02
600_Ohm 6.000000E+02
High_Z 9.900000E+37


#cmdSetup separator _ Phase_1
2 100 Raised

#cmdSetup number Phase Phase_1
:read: :SOUR1:PHAS?
:write: :SOUR1:PHAS #
:tip: Phase of the signal.
:updatemodechange:
deg 0 360


#cmdSetup separator _ Ramp_1
2 100 Raised

#cmdSetup number Symmetry Ramp_1
:read: :SOUR1:FUNC:RAMP:SYMM?
:write: SOUR1:FUNC:RAMP:SYMM #
:tip: Symmetry for ramp
:updatemodechange:
% 0 100


#cmdSetup separator _ Square_1
2 100 Raised

#cmdSetup number Duty_cycle Square_1
:read: :SOUR1:FUNC:SQU:DCYCLE?
:write: SOUR1:FUNC:SQU:DCYCLE #
:tip: Duty cycle for square
:updatemodechange:
% 0 100


#cmdSetup separator - Pulse_1
2 100 Raised

#cmdSetup number Duty_cycle Pulse_1
:read: :SOUR1:FUNC:PULSE:DCYCLE?
:update: Pulse_1.Width Pulse_1.Rise Pulse_1.Fall
:write: SOUR1:FUNC:PULSE:DCYCLE #
:tip: Duty cycle for pulse
:updatemodechange:
% 0 100


#cmdSetup number Width Pulse_1
:read: :SOUR1:FUNC:PULSE:WIDTH?
:textwidth: 8
:write: SOUR1:FUNC:PULSE:WIDTH #
:update: Pulse_1.Duty_cycle Pulse_1.Rise Pulse_1.Fall
:tip: Pulse Width
:updatemodechange:
s MinPeriod 1M


#cmdSetup number Rise_time Pulse_1
:read: :SOUR1:FUNC:PULSE:TRAN:LEAD?
:textwidth: 8
:write: SOUR1:FUNC:PULSE:TRAN:LEAD #
:update: Pulse_1.Duty_cycle Pulse_1.Width Pulse_1.Fall
:tip: Pulse Rising edge, up to 0.625 x pulse width
:updatemodechange:
s 10n 1M


#cmdSetup number Fall_time Pulse_1
:read: :SOUR1:FUNC:PULSE:TRAN:TRA?
:textwidth: 8
:write: SOUR1:FUNC:PULSE:TRAN:TRA #
:update: Pulse_1.Duty_cycle Pulse_1.Width Pulse_1.Rise
:tip: Pulse Falling edge, up to 0.625 x pulse width
:updatemodechange:
s 10n 1M


#cmdSetup selector Settings_1 Channel_1
Channel_1.Waveform
SIN Freq_1. Ampli_1. CalZ_1. Phase_1.
SQU Freq_1. Ampli_1. CalZ_1. Phase_1. Square_1.
RAMP Freq_1. Ampli_1. CalZ_1. Phase_1. Ramp_1.
PULSE Freq_1. Ampli_1. CalZ_1. Phase_1. Pulse_1.
NOISE Ampli_1. CalZ_1.
USER Freq_1. Ampli_1. CalZ_1. Phase_1.
DC Offset_1. CalZ_1.



; --------------------  Setup Menu CH2  --------------------

#cmdSetup color _ Channel_2
(0,255,255)

#cmdSetup indicator Output_state Channel_2
:read: :OUTP2?
:updatealloff:
Off (value)=="OFF" (204,255,204)
On (value)=="ON" (0,153,0)


#cmdSetup buttons Output_state Channel_2
:write: :OUTP2
Off OFF
On ON


#cmdSetup combobox Waveform Channel_2
:read: :SOUR2:APPL?
:readmath: getElement(unQuote(value),0,",")
:write: :SOUR2:APPL:#
:update: Channel_2.Arbitrary
Sine SIN
Square SQU
Pulse PULSE
Ramp RAMP
Noise NOISE
Arbitrary USER
DC DC


#cmdSetup combobox Arbitrary Channel_2
:read: :SOUR2:FUNC?
:readmath: getElement(unQuote(value),0,",")
:write: :SOUR2:FUNC # 
:update: Channel_2.Waveform 
SinC SINC
Lorentz LORENTZ
Gauss_pulse GAUSSPULSE
Stair_down STAIRDN
Stair_up STAIRUP
Airy AIRY
Cubic CUBIC
Exp._rise EXPRISE
Exp._fall EXPFALL
CosH COSH
Abs._sine ABSSINE
DC DC


#cmdSetup separator _ Freq_2
2 100 Raised

#cmdSetup number Frequency Freq_2
:read: :SOUR2:FREQ?
:textwidth: 8
:write: :SOUR2:FREQ #
:update: Freq_2.Period
:tip: MaxFrequency is only possible in sine mode.
:updatemodechange:
Hz 1u MaxFrequency


#cmdSetup number Period Freq_2
:read: :SOUR2:PER?
:write: :SOUR2:PER #
:textwidth: 8
:update: Freq_2.Frequency
:tip: MinPeriod is only possible in sine mode.
:updatemodechange:
s MinPeriod 1M


#cmdSetup separator _ Ampli_2
2 100 Raised


#cmdSetup radio Amplitude_unit Ampli_2
:enable: CalZ_2.Load_Imp=="9.900000E+37"
:visible: CalZ_2.Load_Imp=="9.900000E+37"
:read: :SOUR2:VOLT:UNIT?
:string:
:write: :SOUR2:VOLT:UNIT # 
:update: Ampli_2.Amplitude, Ampli_2.High_Level, Ampli_2.Low_Level, Ampli_2.Offset
:tip: <html>Amplitude units available are Volts peak to peak, Volts RMS and dBm<br>dBm is not possible with High Z (High ; Impedance) setting 
:updatemodechange:
Vpp VPP
Vrms VRMS


#cmdSetup radio Amplitude_unit Ampli_2
:enable: CalZ_2.Load_Imp!="9.900000E+37"
:visible: CalZ_2.Load_Imp!="9.900000E+37"
:read: :SOUR2:VOLT:UNIT?
:string:
:write: :SOUR2:VOLT:UNIT # 
:update: Ampli_2.Amplitude, Ampli_2.High_Level, Ampli_2.Low_Level, Ampli_2.Offset
:tip: <html>Amplitude units available are Volts peak to peak, Volts RMS and dBm<br>dBm is not possible with High Z (High ; Impedance) setting 
:updatemodechange:
Vpp VPP
Vrms VRMS
dBm DBM


#cmdSetup number Amplitude Ampli_2
:enable: Ampli_2.Amplitude_unit=="VPP"
:visible: Ampli_2.Amplitude_unit=="VPP"
:read: :SOUR2:VOLT?
:write: :SOUR2:VOLT #
:textwidth: 8
:update: Ampli_2.High_Level, Ampli_2.Low_Level, Ampli_2.Offset
:tip: Vpp Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
Vpp 1m 20

#cmdSetup number Amplitude Ampli_2
:enable: Ampli_2.Amplitude_unit=="VRMS"
:visible: Ampli_2.Amplitude_unit=="VRMS"
:read: :SOUR2:VOLT?
:write: :SOUR2:VOLT #
:textwidth: 8
:update: Ampli_2.High_Level, Ampli_2.Low_Level, Ampli_2.Offset
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
Vrms 1m 7

#cmdSetup number Amplitude Ampli_2
:enable: Ampli_2.Amplitude_unit=="DBM"
:visible: Ampli_2.Amplitude_unit=="DBM"
:read: :SOUR2:VOLT?
:write: :SOUR2:VOLT #
:textwidth: 8
:update: Ampli_2.High_Level, Ampli_2.Low_Level, Ampli_2.Offset
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit.
:updatemodechange:
dBm -56 23


#cmdSetup number High_Level Ampli_2
:read: :SOUR2:VOLT:HIGH?
:textwidth: 8
:write: :SOUR2:VOLT:HIGH #
:update: Ampli_2.Amplitude, Ampli_2.Low_Level, Ampli_2.Offset
:tip: Must be > Low Level. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup number Low_Level Ampli_2
:read: :SOUR2:VOLT:LOW?
:textwidth: 8
:write: :SOUR2:VOLT:LOW #
:update: Ampli_2.Amplitude, Ampli_2.High_Level, Ampli_2.Offset
:tip: Must be < High Level. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup number Offset Ampli_2
:read: :SOUR2:VOLT:OFFS?
:textwidth: 8
:write: :SOUR2:VOLT:OFFS #
:update: Ampli_2.Amplitude, Ampli_2.High_Level, Ampli_2.Low_Level
:tip: Vpp Amplitude + offset must be within +/-10V. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup separator _ Offset_2
2 100 Raised

; Seperate offset for the DC (Arb) mode
#cmdSetup number DC_Offset Offset_2
:read: :SOUR2:VOLT:OFFS?
:textwidth: 8
; Because of a bug in DG1000Z, offset value is also written to SINe, to get TestController read-out.
:write: :SOUR2:APPL:SIN MIN,MIN,#,0;:SOUR2:APPL:DC 1,1,#;
:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z.
:updatemodechange:
V -10 10


#cmdSetup combobox Load_Imp CalZ_2
:read: :OUTP2:IMP?
:write: :OUTP2:IMP #
:update: Ampli_2.Amplitude, Ampli_2.Low_Level, Ampli_2.High_Level, Ampli_2.Offset
:tip: Calibrates Amplitude settings to match the actual load impedance
:updatemodechange:
50_Ohm 5.000000E+01
75_Ohm 7.500000E+01
110_Ohm 1.100000E+02
600_Ohm 6.000000E+02
High_Z 9.900000E+37


#cmdSetup separator _ Phase_2
2 100 Raised

#cmdSetup number Phase Phase_2
:read: :SOUR2:PHAS?
:write: :SOUR2:PHAS #
:tip: Phase of the signal.
:updatemodechange:
deg 0 360


#cmdSetup separator _ Ramp_2
2 100 Raised

#cmdSetup number Symmetry Ramp_2
:read: :SOUR2:FUNC:RAMP:SYMM?
:write: SOUR2:FUNC:RAMP:SYMM #
:tip: Symmetry for ramp
:updatemodechange:
% 0 100


#cmdSetup separator _ Square_2
2 100 Raised

#cmdSetup number Duty_cycle Square_2
:read: :SOUR2:FUNC:SQU:DCYCLE?
:write: SOUR2:FUNC:SQU:DCYCLE #
:tip: Duty cycle for square
:updatemodechange:
% 0 100


#cmdSetup separator _ Pulse_2
2 100 Raised

#cmdSetup number Duty_cycle Pulse_2
:read: :SOUR2:FUNC:PULSE:DCYCLE?
:write: SOUR2:FUNC:PULSE:DCYCLE #
:update: Pulse_2.Width, Pulse_2.Rise, Pulse_2.Fall
:tip: Duty cycle for pulse
:updatemodechange:
% 0 100


#cmdSetup number Width Pulse_2
:read: :SOUR2:FUNC:PULSE:WIDTH?
:textwidth: 8
:write: SOUR2:FUNC:PULSE:WIDTH #
:update: Pulse_2.Duty_cycle, Pulse_2.Rise, Pulse_2.Fall
:tip: Pulse Width
:updatemodechange:
s MinPeriod 1M


#cmdSetup number Rise_time Pulse_2
:read: :SOUR2:FUNC:PULSE:TRAN:LEAD?
:textwidth: 8
:write: SOUR2:FUNC:PULSE:TRAN:LEAD #
:update: Pulse_2.Duty_cycle, Pulse_2.Width, Pulse_2.Fall
:tip: Pulse Rising edge, up to 0.625 x pulse width
:updatemodechange:
s 10n 1M


#cmdSetup number Fall_time Pulse_2
:read: :SOUR2:FUNC:PULSE:TRAN:TRA?
:textwidth: 8
:write: SOUR2:FUNC:PULSE:TRAN:TRA #
:update: Pulse_2.Duty_cycle, Pulse_2.Width, Pulse_2.Rise
:tip: Pulse Falling edge, up to 0.625 x pulse width
:updatemodechange:
s 10n 1M


#cmdSetup selector Settings_2 Channel_2
Channel_2.Waveform
SIN Freq_2. Ampli_2. CalZ_2. Phase_2.
SQU Freq_2. Ampli_2. CalZ_2. Phase_2. Square_2.
RAMP Freq_2. Ampli_2. CalZ_2. Phase_2. Ramp_2.
PULSE Freq_2. Ampli_2. CalZ_2. Phase_2. Pulse_2.
NOISE Ampli_2. CalZ_2. 
USER Freq_2. Ampli_2. CalZ_2. Phase_2.
DC Offset_2. CalZ_2.



; --------------------  Setup Menu Utility  --------------------

#cmdSetup indicator Clock_Source Utility
:read: :SYST:ROSC:SOUR?
:string:
:updatemodechange:
Internal (value)=="INT" (255,204,51)
External (value)=="EXT" (0,153,0)


#cmdSetup buttons Clock_Source Utility
:write: :SYST:ROSC:SOUR #
:tip: Select internal clock, or external 10MHz clock source
Set_Int INT
Set_Ext EXT


#cmdSetup separator _ Utility
2 100 Empty

#cmdSetup separator _ Utility
2 100 Raised

#cmdSetup separator _ Utility
2 100 Empty


#cmdSetup button Phase_Allign_CH1 Utility
:write: :SOUR1:PHAS:SYNC
:tip: Allign the fase of CH1 with CH2 (Synchronize phase)

#cmdSetup button Phase_Allign_CH2 Utility
:write: :SOUR2:PHAS:SYNC
:tip: Allign the fase of CH2 with CH1 (Synchronize phase)



